{
  "openapi": "3.1.0",
  "info": {
    "title": "Open API",
    "description": "Manage MoreLogin browser profiles and cloud browser runtimes remotely through the MoreLogin Open API.\n\n**Base URL**: `https://api.morelogin.com`\n\nThe Open API manages the same browser profiles as the Local API, but it does not require the\nMoreLogin desktop client. Because no local client is involved, the Open API cannot launch a browser\non your own machine. Instead, it can start the profile as a **cloud runtime** that runs on\nMoreLogin infrastructure and is driven over the Chrome DevTools Protocol (CDP).\n\n| Capability | Local API | Open API |\n| --- | --- | --- |\n| Manage profiles, proxies, groups, tags | Yes | Yes |\n| Launch the browser on your own machine | Yes | No |\n| Launch the browser in the MoreLogin cloud | Yes | Yes |\n\n**ID encoding**: MoreLogin IDs are 64-bit integers on the server, but they are serialized in JSON as\ndecimal strings to avoid precision loss in JavaScript. Send them as strings and read them as strings.\n\nAuthentication uses an OAuth2 Bearer token. See\n[Authentication](../Getting%20Started/authentication.md) for details.\n",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.morelogin.com",
      "description": "MoreLogin Open API endpoint"
    }
  ],
  "security": [
    {
      "OpenApiBearer": []
    }
  ],
  "tags": [
    {
      "name": "Profiles",
      "description": "Create, update, query, and delete browser profile configurations."
    },
    {
      "name": "Cloud Runtime",
      "description": "Start, stop, query, and connect to browser profiles running in the MoreLogin cloud."
    },
    {
      "name": "Fingerprint & Device Config",
      "description": "Browser kernel versions, user agents, resolutions, languages, time zones, and device models."
    },
    {
      "name": "Cache",
      "description": "Clear cloud-side profile cache."
    }
  ],
  "paths": {
    "/env/create/quick": {
      "post": {
        "summary": "Quick create browser profile",
        "description": "Create 1 to 200 browser profiles that share the same configuration.\n\nThe browser kernel is selected from published kernels based on `operatorSystemId`. No client\ninformation is used, so you can optionally pin the machine spec with `systemBitType` and\n`architecture`.\n",
        "operationId": "quickCreateBrowserProfileOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuickCreateRequest"
              },
              "example": {
                "quantity": 1,
                "browserTypeId": 1,
                "operatorSystemId": 1,
                "groupName": "Marketing",
                "isEncrypt": 0,
                "browserCore": 0,
                "systemBitType": 1,
                "architecture": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "description": "IDs of the created profiles, in creation order.",
                          "items": {
                            "$ref": "#/components/schemas/EnvironmentId"
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    "1800000000000001"
                  ],
                  "requestId": "1d4f3ea968664593860b94b35d4ebf5e"
                }
              }
            }
          }
        }
      }
    },
    "/env/create/advanced": {
      "post": {
        "summary": "Advanced create browser profile",
        "description": "Create a single browser profile with a full fingerprint configuration.\n\nThe browser kernel is matched from published kernels using the operating system and kernel\nfields in the request. No client version is read.\n",
        "operationId": "advancedCreateBrowserProfileOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdvancedCreateRequest"
              },
              "example": {
                "envName": "marketing-01",
                "browserTypeId": 1,
                "operatorSystemId": 1,
                "groupName": "Marketing",
                "isEncrypt": 0,
                "envRemark": "Created through the Open API",
                "uaVersion": 124,
                "browserCore": 124,
                "systemBitType": 1,
                "architecture": 0,
                "afterStartupConfig": {
                  "afterStartup": 2,
                  "autoOpenUrls": [
                    "https://example.com"
                  ],
                  "stayOnCheckIPPage": false
                },
                "startupParams": [
                  "--disable-notifications"
                ],
                "disableAudio": 0,
                "disableVideo": 0,
                "disableImg": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/EnvironmentId"
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": "1800000000000001",
                  "requestId": "1d4f3ea968664593860b94b35d4ebf5e"
                }
              }
            }
          }
        }
      }
    },
    "/env/update": {
      "post": {
        "summary": "Modify browser profile",
        "description": "Update an existing browser profile. Only the fields present in the request are changed.\n\nWhen the kernel has to be re-matched, the operating system already stored on the profile is\nused. No client operating system or version is read.\n",
        "operationId": "updateBrowserProfileOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRequest"
              },
              "example": {
                "envId": "1800000000000001",
                "envName": "marketing-01-updated",
                "envRemark": "Updated through the Open API",
                "uaVersion": 124,
                "browserCore": 124,
                "systemBitType": 1,
                "architecture": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        }
      }
    },
    "/env/page": {
      "post": {
        "summary": "Get a list of browser profiles",
        "description": "Query the browser profiles visible to the authenticated member, page by page.\n\nPaging starts at 1. `dataList` is an empty array when there are no results.\n",
        "operationId": "listBrowserProfilesOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnvPageRequest"
              },
              "example": {
                "pageNo": 1,
                "pageSize": 10,
                "keyword": "marketing"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/EnvPageData"
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/detail": {
      "post": {
        "summary": "Get browser profile details",
        "description": "Return the full configuration of a single browser profile.",
        "operationId": "getBrowserProfileDetailOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnvIdRequest"
              },
              "example": {
                "envId": "1800000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/EnvDetail"
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/removeToRecycleBin/batch": {
      "post": {
        "summary": "Delete browser profiles",
        "description": "Move one or more browser profiles to the recycle bin.",
        "operationId": "batchRemoveBrowserProfilesOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envIds": {
                    "type": "array",
                    "description": "Profile IDs to move to the recycle bin. Must not be empty.",
                    "minItems": 1,
                    "items": {
                      "$ref": "#/components/schemas/EnvironmentId"
                    }
                  }
                },
                "required": [
                  "envIds"
                ]
              },
              "example": {
                "envIds": [
                  "1800000000000001",
                  "1800000000000002"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/BooleanDataResponse"
          }
        }
      }
    },
    "/env/lock/query": {
      "post": {
        "summary": "Get browser profile lock status",
        "description": "Check whether a browser profile is currently locked by another member.",
        "operationId": "queryBrowserProfileLockOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnvIdRequest"
              },
              "example": {
                "envId": "1800000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "envId": {
                              "$ref": "#/components/schemas/EnvironmentId"
                            },
                            "locked": {
                              "type": "boolean",
                              "description": "Whether the profile is locked by another member.",
                              "example": false
                            }
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/setGroup/batch": {
      "post": {
        "summary": "Batch set profile group",
        "description": "Move profiles into a group by group name. The group is created automatically when it does not\nexist.\n\nProvide at least one of `envIds` or `uniqueIds`.\n",
        "operationId": "batchSetBrowserProfileGroupOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EnvIdsOrUniqueIds"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "groupName": {
                        "type": "string",
                        "description": "Target group name. Must not be blank.",
                        "minLength": 1,
                        "example": "Marketing"
                      }
                    },
                    "required": [
                      "groupName"
                    ]
                  }
                ]
              },
              "example": {
                "envIds": [
                  "1800000000000001"
                ],
                "groupName": "Marketing"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/BooleanDataResponse"
          }
        }
      }
    },
    "/env/setProxy/batch": {
      "post": {
        "summary": "Batch set profile proxy",
        "description": "Bind a proxy to multiple profiles. When `proxyId` matches an existing proxy, the profiles are\nbound to it; otherwise a new proxy is created from the supplied connection details.\n\nProvide at least one of `envIds` or `uniqueIds`.\n",
        "operationId": "batchSetBrowserProfileProxyOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EnvIdsOrUniqueIds"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "proxy": {
                        "$ref": "#/components/schemas/ProxyInput"
                      }
                    }
                  }
                ]
              },
              "example": {
                "envIds": [
                  "1800000000000001"
                ],
                "proxy": {
                  "proxyIp": "127.0.0.1",
                  "proxyPort": 1080,
                  "proxyType": 2,
                  "proxyProvider": 0,
                  "username": "user",
                  "password": "pass"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/BooleanDataResponse"
          }
        }
      }
    },
    "/env/setRemark/batch": {
      "post": {
        "summary": "Batch set profile remark",
        "description": "Set the remark on multiple profiles. Pass an empty string to clear the remark.\n\nProvide at least one of `envIds` or `uniqueIds`.\n",
        "operationId": "batchSetBrowserProfileRemarkOpenApi",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EnvIdsOrUniqueIds"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "envRemark": {
                        "type": "string",
                        "description": "Profile remark. An empty string clears the remark.",
                        "example": "Managed by automation"
                      }
                    },
                    "required": [
                      "envRemark"
                    ]
                  }
                ]
              },
              "example": {
                "envIds": [
                  "1800000000000001"
                ],
                "envRemark": "Managed by automation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/BooleanDataResponse"
          }
        }
      }
    },
    "/cloudbrowser/start": {
      "post": {
        "summary": "Start cloud runtime",
        "description": "Start a browser profile as a cloud runtime.\n\nStarting is asynchronous. A successful response only means the start request was accepted. Poll\n[Page cloud runtimes](#operation/pageCloudRuntimesOpenApi) until `cloudBrowserStatus` is\n`RUNNING`, then call [Connect cloud runtime](#operation/connectCloudRuntimeOpenApi).\n\nA member can have only one active run per profile. Starting also validates profile permissions,\nfeature entitlement, proxy reachability, kernel availability, and AI credit balance.\n",
        "operationId": "startCloudRuntimeOpenApi",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserStartRequest"
              },
              "example": {
                "envId": "1800000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        }
      }
    },
    "/cloudbrowser/stop": {
      "post": {
        "summary": "Stop cloud runtime",
        "description": "Stop the active cloud runtime for a profile. A successful response only means the stop request\nwas accepted; archiving and resource release may still be in progress.\n\n`force` is only honored when the current run has an archive status of `FAILED`.\n",
        "operationId": "stopCloudRuntimeOpenApi",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserStopRequest"
              },
              "example": {
                "envId": "1800000000000001",
                "force": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        }
      }
    },
    "/cloudbrowser/page": {
      "post": {
        "summary": "Page cloud runtimes",
        "description": "Query the browser profiles visible to the authenticated member together with the cloud runtime\nstatus for that member.\n\n`envId` also accepts the field alias `id`. `groupId` of `0` means ungrouped.\n",
        "operationId": "pageCloudRuntimesOpenApi",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserPageRequest"
              },
              "example": {
                "pageNo": 1,
                "pageSize": 10,
                "keyword": "marketing"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/CloudBrowserPageResponse"
          }
        }
      }
    },
    "/cloudbrowser/connect": {
      "post": {
        "summary": "Connect cloud runtime",
        "description": "Return the connection details for a running cloud runtime. Attach an automation framework such\nas Puppeteer, Playwright, or Selenium to the returned `cdpUrl`.\n\nThe runtime must be in the `RUNNING` state. Calling this again issues a new desktop token, which\ncan invalidate an earlier viewer session. Treat both returned URLs as short-lived credentials\nand do not log or persist them.\n",
        "operationId": "connectCloudRuntimeOpenApi",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserConnectRequest"
              },
              "example": {
                "envId": "1800000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/CloudBrowserConnectResponse"
          }
        }
      }
    },
    "/env/advanced/ua/versions": {
      "post": {
        "summary": "Get a list of browser kernel versions",
        "description": "Return the published browser kernel and UA major versions.\n\nThe request body is optional and every field is optional. Defaults are Windows (`1`), 64-bit\n(`1`), and x86 (`0`). Only published kernels are returned.\n",
        "operationId": "listKernelVersionsOpenApi",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "systemType": {
                    "$ref": "#/components/schemas/OperatingSystem"
                  },
                  "systemBitType": {
                    "$ref": "#/components/schemas/SystemBitType"
                  },
                  "architecture": {
                    "$ref": "#/components/schemas/Architecture"
                  }
                }
              },
              "example": {
                "systemType": 1,
                "systemBitType": 1,
                "architecture": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "browserType": {
                                "$ref": "#/components/schemas/BrowserType"
                              },
                              "versions": {
                                "type": "array",
                                "description": "Published UA and kernel major versions for this browser type.",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  124,
                                  123
                                ]
                              }
                            }
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/advanced/ua/get": {
      "post": {
        "summary": "Get browser user agent",
        "description": "Generate a user agent that matches the requested operating system and browser vendor, using only\npublished kernels.\n",
        "operationId": "getUserAgentOpenApi",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "os": {
                    "$ref": "#/components/schemas/OperatingSystem"
                  },
                  "osVersion": {
                    "type": "string",
                    "description": "Operating system version. Defaults to an empty string.\n",
                    "enum": [
                      "",
                      "Windows 7",
                      "Windows 8",
                      "Windows 10",
                      "Windows 11",
                      "macOS 12",
                      "macOS 13",
                      "macOS 14"
                    ],
                    "example": "Windows 11"
                  },
                  "vendor": {
                    "$ref": "#/components/schemas/BrowserType"
                  },
                  "mobileDevice": {
                    "type": "string",
                    "description": "Mobile device model ID. Used for Android and iOS profiles.",
                    "example": "pixel_8"
                  },
                  "systemBitType": {
                    "$ref": "#/components/schemas/SystemBitType"
                  },
                  "architecture": {
                    "$ref": "#/components/schemas/Architecture"
                  }
                },
                "required": [
                  "os",
                  "vendor"
                ]
              },
              "example": {
                "os": 1,
                "osVersion": "Windows 11",
                "vendor": 1,
                "systemBitType": 1,
                "architecture": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "ua": {
                              "type": "string",
                              "description": "Matched user agent.",
                              "example": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
                            },
                            "resolution": {
                              "$ref": "#/components/schemas/Resolution"
                            },
                            "mobileDevice": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Mobile device model ID. Empty for desktop profiles.",
                              "example": null
                            }
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/base/resolution/list": {
      "post": {
        "summary": "Get resolution list",
        "description": "Return the resolutions available for a user agent or operating system.",
        "operationId": "listResolutionsOpenApi",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ua": {
                    "type": "string",
                    "description": "User agent used to match resolutions.",
                    "example": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
                  },
                  "os": {
                    "$ref": "#/components/schemas/OperatingSystem"
                  }
                }
              },
              "example": {
                "os": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Returns an empty array when there are no matches.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Resolution"
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/base/list": {
      "post": {
        "summary": "Get time zone and language list",
        "description": "Return the time zones and languages available for an operating system.",
        "operationId": "listTimezonesAndLanguagesOpenApi",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "os": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/OperatingSystem"
                      }
                    ],
                    "default": 1
                  }
                }
              },
              "example": {
                "os": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Empty lists are returned as empty arrays.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "time_zone_list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/IdValueOption"
                              }
                            },
                            "language_list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/IdValueOption"
                              }
                            }
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "time_zone_list": [
                      {
                        "id": "America/Los_Angeles",
                        "value": "(GMT-08:00) America/Los_Angeles"
                      }
                    ],
                    "language_list": [
                      {
                        "id": "en-US",
                        "value": "English (United States)"
                      }
                    ]
                  },
                  "requestId": "1d4f3ea968664593860b94b35d4ebf5e"
                }
              }
            }
          }
        }
      }
    },
    "/env/base/mobile/devices": {
      "post": {
        "summary": "Get phone model list",
        "description": "Return the mobile device models available for Android and iOS profiles. No request body.",
        "operationId": "listMobileDevicesOpenApi",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "responses": {
          "200": {
            "description": "Success. Returns an empty array when no models are available.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ApiResponseBase"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/MobileDevice"
                          }
                        }
                      },
                      "required": [
                        "data"
                      ]
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/env/fingerprint/refresh": {
      "post": {
        "summary": "Refresh profile fingerprint",
        "description": "Regenerate the fingerprint of a profile.\n\nProvide at least one of `envId` or `uniqueId`. The operating system in the request takes\nprecedence; when it is omitted, the operating system stored on the profile is used to pick a\npublished kernel. No client information is read.\n",
        "operationId": "refreshFingerprintOpenApi",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envId": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/EnvironmentId"
                      }
                    ],
                    "description": "Profile ID. Provide this or `uniqueId`."
                  },
                  "uniqueId": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Profile sequence number. Provide this or `envId`.",
                    "example": 1001
                  },
                  "browserCore": {
                    "type": "integer",
                    "description": "Kernel major version. `0` or omitted means automatic matching.",
                    "minimum": 0,
                    "example": 124
                  },
                  "uaVersion": {
                    "type": "integer",
                    "description": "UA major version. `0` or omitted refreshes according to business rules.",
                    "minimum": 0,
                    "example": 124
                  },
                  "browserTypeId": {
                    "$ref": "#/components/schemas/BrowserType"
                  },
                  "operatorSystemId": {
                    "$ref": "#/components/schemas/OperatingSystem"
                  },
                  "systemBitType": {
                    "$ref": "#/components/schemas/SystemBitType"
                  },
                  "architecture": {
                    "$ref": "#/components/schemas/Architecture"
                  },
                  "advancedSetting": {
                    "$ref": "#/components/schemas/AdvancedSetting"
                  }
                }
              },
              "example": {
                "envId": "1800000000000001",
                "browserCore": 124,
                "uaVersion": 124,
                "browserTypeId": 1,
                "operatorSystemId": 1,
                "systemBitType": 1,
                "architecture": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        }
      }
    },
    "/env/cache/cleanCloud": {
      "post": {
        "summary": "Clear cloud profile cache",
        "description": "Clear the cloud-side cache of a profile. This does not touch any local client cache.\n\nProvide at least one of `envId` or `uniqueId`.\n",
        "operationId": "cleanCloudCacheOpenApi",
        "tags": [
          "Cache"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envId": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/EnvironmentId"
                      }
                    ],
                    "description": "Profile ID. Provide this or `uniqueId`."
                  },
                  "uniqueId": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Profile sequence number. Provide this or `envId`.",
                    "minimum": 1,
                    "example": 1001
                  },
                  "others": {
                    "type": "boolean",
                    "description": "Whether to clear other cloud cache data.",
                    "example": true
                  },
                  "cookie": {
                    "type": "boolean",
                    "description": "Whether to clear cloud cookies.",
                    "example": false
                  }
                }
              },
              "example": {
                "envId": "1800000000000001",
                "others": true,
                "cookie": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "OpenApiBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "OAuth2 access token obtained from `/oauth2/token`. Send it as `Authorization: Bearer <token>`.\nTokens expire after 3600 seconds.\n"
      }
    },
    "schemas": {
      "OperatingSystem": {
        "type": "integer",
        "description": "Operating system:\n- `1` — Windows\n- `2` — macOS\n- `3` — Android\n- `4` — iOS\n- `5` — Linux\n",
        "enum": [
          1,
          2,
          3,
          4,
          5
        ],
        "example": 1
      },
      "BrowserType": {
        "type": "integer",
        "description": "Browser type:\n- `1` — Chrome\n- `2` — Firefox\n",
        "enum": [
          1,
          2
        ],
        "example": 1
      },
      "SystemBitType": {
        "type": "integer",
        "description": "System bitness. Defaults to `1`:\n- `0` — 32-bit\n- `1` — 64-bit\n",
        "enum": [
          0,
          1
        ],
        "default": 1,
        "example": 1
      },
      "Architecture": {
        "type": "integer",
        "description": "CPU architecture. Defaults to `0`:\n- `0` — x86\n- `1` — ARM\n",
        "enum": [
          0,
          1
        ],
        "default": 0,
        "example": 0
      },
      "ToggleFlag": {
        "type": "integer",
        "description": "Switch value:\n- `0` — off\n- `1` — on\n",
        "enum": [
          0,
          1
        ],
        "example": 0
      },
      "ProxyType": {
        "type": "integer",
        "description": "Proxy protocol:\n- `0` — HTTP\n- `1` — HTTPS\n- `2` — SOCKS5\n- `3` — SSH\n",
        "enum": [
          0,
          1,
          2,
          3
        ],
        "example": 2
      },
      "ProxyProvider": {
        "type": "integer",
        "description": "Proxy provider. `0` to `3` mean a plain proxy of the matching protocol; `4` and above identify a\ncommercial provider:\n- `0` — HTTP\n- `1` — HTTPS\n- `2` — SOCKS5\n- `3` — SSH\n- `4` — Oxylabs\n- `5` — Proxys.io\n- `6` — GeoSurf\n- `7` — Luminati\n- `8` — Lumauto\n- `9` — Oxylabsauto\n- `10` — Trojan\n- `11` — Shadowsocks\n- `12` — vmess\n- `13` — ABCProxy\n- `14` — LunaProxy\n- `15` — IPHTML\n- `16` — PiaProxy\n- `17` — 922S5\n- `18` — 360Proxy\n\nTreat unknown future values as a generic commercial provider.\n",
        "example": 0
      },
      "AdvancedSetting": {
        "type": "object",
        "description": "Dynamic fingerprint configuration. Keys come from the profile advanced-settings protocol; each\nvalue may be a string, number, boolean, array, or object depending on the key.\n",
        "additionalProperties": true,
        "example": {
          "language": "en-US",
          "timezone": "America/Los_Angeles"
        }
      },
      "ProxyInput": {
        "type": "object",
        "description": "Proxy connection details. When `proxyId` refers to an existing proxy, that proxy is reused;\notherwise a new proxy is created from these fields.\n",
        "properties": {
          "proxyId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Existing proxy ID.",
            "example": "1800000000000101"
          },
          "proxyIp": {
            "type": "string",
            "description": "Proxy host or IP address.",
            "example": "127.0.0.1"
          },
          "proxyPort": {
            "type": "integer",
            "description": "Proxy port.",
            "minimum": 1,
            "maximum": 65535,
            "example": 1080
          },
          "proxyName": {
            "type": "string",
            "description": "Proxy name.",
            "maxLength": 600,
            "example": "proxy-a"
          },
          "proxyType": {
            "$ref": "#/components/schemas/ProxyType"
          },
          "proxyProvider": {
            "$ref": "#/components/schemas/ProxyProvider"
          },
          "ipMonitor": {
            "type": "boolean",
            "description": "Whether to monitor changes to the exit IP.",
            "example": true
          },
          "ipChangeAction": {
            "type": "integer",
            "description": "Action to take after the exit IP changes.",
            "example": 0
          },
          "username": {
            "type": "string",
            "description": "Proxy username.",
            "maxLength": 200,
            "example": "user"
          },
          "password": {
            "type": "string",
            "description": "Proxy password.",
            "maxLength": 100,
            "example": "pass"
          },
          "refreshUrl": {
            "type": "string",
            "description": "Proxy refresh URL.",
            "example": "https://example.com/refresh"
          },
          "encryptionType": {
            "type": "integer",
            "description": "Proxy encryption type.",
            "example": 0
          },
          "country": {
            "type": "string",
            "description": "Country or region.",
            "example": "US"
          },
          "state": {
            "type": "string",
            "description": "State or province.",
            "example": "CA"
          },
          "city": {
            "type": "string",
            "description": "City.",
            "example": "Los Angeles"
          }
        }
      },
      "AccountInfo": {
        "type": "object",
        "description": "Platform account bound to the profile.",
        "properties": {
          "username": {
            "type": "string",
            "description": "Platform account username.",
            "maxLength": 64,
            "example": "account@example.com"
          },
          "password": {
            "type": "string",
            "description": "Platform account password.",
            "maxLength": 50,
            "example": "secret"
          },
          "siteId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Site ID.",
            "example": "1800000000000201"
          },
          "platformId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Platform ID. `9999` means a custom platform.",
            "example": "9999"
          },
          "customerUrl": {
            "type": "string",
            "description": "Custom platform URL. Required when `platformId` is `9999`. Must be a valid URL.",
            "example": "https://example.com"
          },
          "otpSecret": {
            "type": "string",
            "description": "Two-factor authentication (2FA) secret.",
            "example": "BASE32SECRET"
          }
        },
        "required": [
          "platformId"
        ]
      },
      "AfterStartupConfigInput": {
        "type": "object",
        "description": "Behavior applied after the browser starts.",
        "properties": {
          "afterStartup": {
            "type": "integer",
            "description": "Startup behavior. Defaults to `1`:\n- `1` — reopen the pages from the last session\n- `2` — open the specified pages\n- `3` — open the specified pages and the platform\n- `4` — reopen the last session pages and the platform\n",
            "enum": [
              1,
              2,
              3,
              4
            ],
            "default": 1,
            "example": 2
          },
          "autoOpenUrls": {
            "type": "array",
            "description": "Pages to open automatically. Each entry must be a valid URL.",
            "items": {
              "type": "string"
            },
            "example": [
              "https://example.com"
            ]
          },
          "stayOnCheckIPPage": {
            "type": "boolean",
            "description": "Whether to stay on the IP check page after startup.",
            "example": false
          }
        }
      },
      "AfterStartupConfigDetail": {
        "type": "object",
        "description": "Behavior applied after the browser starts, as stored on the profile.",
        "properties": {
          "afterStartup": {
            "type": "integer",
            "description": "Startup behavior. `1` to `4`.",
            "enum": [
              1,
              2,
              3,
              4
            ],
            "example": 2
          },
          "autoOpenUrls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "https://example.com"
            ]
          },
          "platformUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Platform URL opened after startup.",
            "example": "https://platform.example.com"
          }
        }
      },
      "TagInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Tag ID.",
            "example": "1800000000000301"
          },
          "tagName": {
            "type": "string",
            "description": "Tag name.",
            "example": "important"
          }
        }
      },
      "ProxyInfoDetail": {
        "type": "object",
        "description": "Proxy currently bound to the profile.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Proxy ID.",
            "example": "1800000000000101"
          },
          "proxyName": {
            "type": "string",
            "description": "Proxy name.",
            "example": "proxy-a"
          },
          "proxyType": {
            "$ref": "#/components/schemas/ProxyType"
          },
          "proxyProvider": {
            "$ref": "#/components/schemas/ProxyProvider"
          },
          "proxyCategoryType": {
            "type": "integer",
            "description": "Proxy category:\n- `1` — cloud platform\n- `2` — self-owned IP\n",
            "enum": [
              1,
              2
            ],
            "example": 2
          },
          "proxyCheckStatus": {
            "type": "integer",
            "description": "Connectivity check status:\n- `0` — pending\n- `1` — succeeded\n- `2` — failed\n- `3` — unknown error\n",
            "enum": [
              0,
              1,
              2,
              3
            ],
            "example": 1
          },
          "proxyStatus": {
            "type": "integer",
            "description": "Proxy status:\n- `0` — normal\n- `1` — pending allocation\n- `2` — upgrading\n- `3` — expired\n",
            "enum": [
              0,
              1,
              2,
              3
            ],
            "example": 0
          },
          "proxyIp": {
            "type": "string",
            "description": "Proxy host or IP address.",
            "example": "127.0.0.1"
          },
          "exportIp": {
            "type": [
              "string",
              "null"
            ],
            "description": "Exit IP address.",
            "example": "203.0.113.10"
          },
          "countryCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Country code.",
            "example": "US"
          },
          "expiryTime": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d+$",
            "description": "Expiry time as a Unix timestamp in milliseconds.",
            "example": "1786320000000"
          },
          "username": {
            "type": [
              "string",
              "null"
            ],
            "description": "Proxy username.",
            "example": "user"
          },
          "password": {
            "type": [
              "string",
              "null"
            ],
            "description": "Proxy password.",
            "example": "pass"
          },
          "refreshUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Proxy refresh URL.",
            "example": "https://example.com/refresh"
          }
        }
      },
      "Resolution": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Resolution ID.",
            "example": "1920_1080"
          },
          "value": {
            "type": "string",
            "description": "Display value.",
            "example": "1920x1080"
          }
        }
      },
      "IdValueOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Option ID.",
            "example": "en-US"
          },
          "value": {
            "type": "string",
            "description": "Display value.",
            "example": "English (United States)"
          }
        }
      },
      "MobileDevice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Device model ID.",
            "example": "pixel_8"
          },
          "name": {
            "type": "string",
            "description": "Device model name.",
            "example": "Pixel 8"
          },
          "resolution": {
            "type": "string",
            "description": "Device resolution.",
            "example": "1080x2400"
          },
          "os": {
            "type": "integer",
            "description": "Operating system:\n- `3` — Android\n- `4` — iOS\n",
            "enum": [
              3,
              4
            ],
            "example": 3
          },
          "platform": {
            "type": "string",
            "description": "Platform name.",
            "example": "Android"
          }
        }
      },
      "EnvIdRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          }
        },
        "required": [
          "envId"
        ]
      },
      "EnvIdsOrUniqueIds": {
        "type": "object",
        "description": "Target profiles. Provide at least one of `envIds` or `uniqueIds`.",
        "properties": {
          "envIds": {
            "type": "array",
            "description": "Profile IDs.",
            "items": {
              "$ref": "#/components/schemas/EnvironmentId"
            }
          },
          "uniqueIds": {
            "type": "array",
            "description": "Profile sequence numbers.",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "example": [
              1001
            ]
          }
        }
      },
      "QuickCreateRequest": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "integer",
            "description": "Number of profiles to create.",
            "minimum": 1,
            "maximum": 200,
            "example": 1
          },
          "browserTypeId": {
            "$ref": "#/components/schemas/BrowserType"
          },
          "operatorSystemId": {
            "$ref": "#/components/schemas/OperatingSystem"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Existing group ID. `0` means ungrouped.",
            "example": "0"
          },
          "groupName": {
            "type": "string",
            "description": "Group name. The group is looked up or created automatically when supplied.\n",
            "maxLength": 50,
            "example": "Marketing"
          },
          "isEncrypt": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to encrypt the profile. Defaults to `0`:\n- `0` — not encrypted\n- `1` — encrypted\n"
          },
          "browserCore": {
            "type": "integer",
            "description": "Kernel major version. Defaults to `0`, which selects a published kernel automatically.",
            "minimum": 0,
            "example": 0
          },
          "systemBitType": {
            "$ref": "#/components/schemas/SystemBitType"
          },
          "architecture": {
            "$ref": "#/components/schemas/Architecture"
          },
          "proxy": {
            "$ref": "#/components/schemas/ProxyInput"
          }
        },
        "required": [
          "quantity",
          "browserTypeId",
          "operatorSystemId"
        ]
      },
      "AdvancedCreateRequest": {
        "type": "object",
        "properties": {
          "envName": {
            "type": "string",
            "description": "Profile name.",
            "maxLength": 100,
            "example": "marketing-01"
          },
          "browserTypeId": {
            "$ref": "#/components/schemas/BrowserType"
          },
          "operatorSystemId": {
            "$ref": "#/components/schemas/OperatingSystem"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Existing group ID. `0` means ungrouped.",
            "example": "0"
          },
          "groupName": {
            "type": "string",
            "description": "Group name. The group is looked up or created automatically when supplied.",
            "maxLength": 50,
            "example": "Marketing"
          },
          "tagIds": {
            "type": "array",
            "description": "Tag IDs. An empty array means no tags.",
            "items": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "example": [
              "1800000000000301"
            ]
          },
          "proxyId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Existing proxy ID. `0` means no proxy.",
            "example": "0"
          },
          "proxy": {
            "$ref": "#/components/schemas/ProxyInput"
          },
          "isEncrypt": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to encrypt the profile. Defaults to `0`."
          },
          "envRemark": {
            "type": "string",
            "description": "Profile remark.",
            "maxLength": 1500,
            "example": "Created through the Open API"
          },
          "uaVersion": {
            "type": "integer",
            "description": "UA major version. Defaults to `0`, meaning any.",
            "minimum": 0,
            "example": 124
          },
          "browserCore": {
            "type": "integer",
            "description": "Kernel major version. Defaults to `0`, which selects a published kernel automatically.",
            "minimum": 0,
            "example": 124
          },
          "systemBitType": {
            "$ref": "#/components/schemas/SystemBitType"
          },
          "architecture": {
            "$ref": "#/components/schemas/Architecture"
          },
          "accountInfo": {
            "$ref": "#/components/schemas/AccountInfo"
          },
          "isShowAccount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Password protection switch."
          },
          "afterStartupConfig": {
            "$ref": "#/components/schemas/AfterStartupConfigInput"
          },
          "startupParams": {
            "type": "array",
            "description": "Browser startup parameters.",
            "items": {
              "type": "string"
            },
            "example": [
              "--disable-notifications"
            ]
          },
          "cookies": {
            "type": "string",
            "description": "Cookies as a JSON text payload.",
            "example": "[{\"name\":\"sid\",\"value\":\"abc\"}]"
          },
          "advancedSetting": {
            "$ref": "#/components/schemas/AdvancedSetting"
          },
          "disableAudio": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to block audio playback."
          },
          "disableVideo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to block video loading."
          },
          "disableImg": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to block image loading."
          },
          "imgLimitSize": {
            "type": "integer",
            "description": "Maximum image size to load, in KB.",
            "minimum": 0,
            "maximum": 100000,
            "example": 1000
          }
        },
        "required": [
          "browserTypeId",
          "operatorSystemId"
        ]
      },
      "UpdateRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnvironmentId"
              }
            ],
            "description": "Profile ID. The request also accepts the field alias `id`."
          },
          "envName": {
            "type": "string",
            "description": "Profile name.",
            "maxLength": 100,
            "example": "marketing-01-updated"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Group ID. `0` means ungrouped.",
            "example": "0"
          },
          "groupName": {
            "type": "string",
            "description": "Group name. The group is looked up or created automatically when supplied.",
            "maxLength": 50,
            "example": "Marketing"
          },
          "tagIds": {
            "type": "array",
            "description": "Tag IDs.",
            "items": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "example": [
              "1800000000000301"
            ]
          },
          "proxyId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Existing proxy ID. `0` means no proxy.",
            "example": "0"
          },
          "envRemark": {
            "type": "string",
            "description": "Profile remark.",
            "maxLength": 1500,
            "example": "Updated through the Open API"
          },
          "uaVersion": {
            "type": "integer",
            "description": "UA major version.",
            "minimum": 0,
            "example": 124
          },
          "browserCore": {
            "type": "integer",
            "description": "Kernel major version.",
            "minimum": 0,
            "example": 124
          },
          "systemBitType": {
            "$ref": "#/components/schemas/SystemBitType"
          },
          "architecture": {
            "$ref": "#/components/schemas/Architecture"
          },
          "accountInfo": {
            "$ref": "#/components/schemas/AccountInfo"
          },
          "isShowAccount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Password protection switch."
          },
          "afterStartupConfig": {
            "$ref": "#/components/schemas/AfterStartupConfigInput"
          },
          "startupParams": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "--disable-notifications"
            ]
          },
          "cookies": {
            "type": "string",
            "description": "Cookies as a JSON text payload.",
            "example": "[{\"name\":\"sid\",\"value\":\"abc\"}]"
          },
          "advancedSetting": {
            "$ref": "#/components/schemas/AdvancedSetting"
          },
          "disableAudio": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to block audio playback."
          },
          "disableVideo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to block video loading."
          },
          "disableImg": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether to block image loading."
          },
          "imgLimitSize": {
            "type": "integer",
            "description": "Maximum image size to load, in KB.",
            "minimum": 0,
            "maximum": 100000,
            "example": 1000
          },
          "hostnameSource": {
            "type": "integer",
            "description": "Device name source:\n- `0` — custom\n- `1` — real\n",
            "enum": [
              0,
              1
            ],
            "example": 0
          },
          "hostname": {
            "type": "string",
            "description": "Device name. Used when `hostnameSource` is `0`.",
            "example": "DESKTOP-OPENAPI"
          },
          "macAddressSource": {
            "type": "integer",
            "description": "MAC address source:\n- `0` — custom\n- `1` — real\n",
            "enum": [
              0,
              1
            ],
            "example": 0
          },
          "macAddress": {
            "type": "string",
            "description": "MAC address. Used when `macAddressSource` is `0`.",
            "example": "00:16:3E:12:34:56"
          }
        },
        "required": [
          "envId"
        ]
      },
      "EnvPageRequest": {
        "type": "object",
        "properties": {
          "uniqueIds": {
            "type": "array",
            "description": "Profile sequence numbers. Up to 100 items.",
            "maxItems": 100,
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "example": [
              1001
            ]
          },
          "envId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnvironmentId"
              }
            ],
            "description": "Profile ID. The request also accepts the field alias `id`."
          },
          "envName": {
            "type": "string",
            "description": "Profile name.",
            "example": "marketing-01"
          },
          "keyword": {
            "type": "string",
            "description": "Keyword filter. Matches profile name, group name, tag name, and remark.",
            "example": "marketing"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Group ID. `0` means ungrouped.",
            "example": "0"
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page.",
            "minimum": 1,
            "maximum": 100,
            "default": 10,
            "example": 10
          },
          "pageNo": {
            "type": "integer",
            "format": "int64",
            "description": "Current page number, starting from 1.",
            "minimum": 1,
            "default": 1,
            "example": 1
          },
          "onlyMainAccount": {
            "type": "boolean",
            "description": "Whether to return only profiles owned by the main account.",
            "example": false
          }
        },
        "required": [
          "pageNo",
          "pageSize"
        ]
      },
      "EnvListItem": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/EnvironmentId"
          },
          "envName": {
            "type": "string",
            "description": "Profile name.",
            "example": "marketing-01"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Group ID. `0` means ungrouped.",
            "example": "0"
          },
          "groupName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Group name.",
            "example": "Marketing"
          },
          "tagInfos": {
            "type": "array",
            "description": "Tags on the profile. Empty array when there are none.",
            "items": {
              "$ref": "#/components/schemas/TagInfo"
            }
          },
          "envRemark": {
            "type": [
              "string",
              "null"
            ],
            "description": "Profile remark.",
            "example": "Created through the Open API"
          },
          "proxyId": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d+$",
            "description": "Proxy ID bound to the profile.",
            "example": "1800000000000101"
          },
          "proxy": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProxyInfoDetail"
              },
              {
                "type": "null"
              }
            ],
            "description": "Proxy details. `null` when no proxy is bound."
          }
        }
      },
      "EnvPageData": {
        "type": "object",
        "properties": {
          "total": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Total number of records.",
            "example": "1"
          },
          "current": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Current page number.",
            "example": "1"
          },
          "pages": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Total number of pages.",
            "example": "1"
          },
          "dataList": {
            "type": "array",
            "description": "Profiles on the current page. Empty array when there are no results.",
            "items": {
              "$ref": "#/components/schemas/EnvListItem"
            }
          }
        },
        "required": [
          "total",
          "current",
          "pages",
          "dataList"
        ]
      },
      "EnvDetail": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/EnvironmentId"
          },
          "envName": {
            "type": "string",
            "description": "Profile name.",
            "example": "marketing-01"
          },
          "browserTypeId": {
            "$ref": "#/components/schemas/BrowserType"
          },
          "operatorSystemId": {
            "$ref": "#/components/schemas/OperatingSystem"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Group ID. `0` means ungrouped.",
            "example": "0"
          },
          "groupName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Group name.",
            "example": "Marketing"
          },
          "tagIds": {
            "type": "array",
            "description": "Tag IDs.",
            "items": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "example": [
              "1800000000000301"
            ]
          },
          "tagInfos": {
            "type": "array",
            "description": "Tags on the profile. Empty array when there are none.",
            "items": {
              "$ref": "#/components/schemas/TagInfo"
            }
          },
          "proxyId": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d+$",
            "description": "Proxy ID bound to the profile.",
            "example": "1800000000000101"
          },
          "isEncrypt": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Whether the profile is encrypted."
          },
          "envRemark": {
            "type": [
              "string",
              "null"
            ],
            "description": "Profile remark.",
            "example": "Created through the Open API"
          },
          "uaVersion": {
            "type": "integer",
            "description": "UA major version.",
            "example": 124
          },
          "browserCore": {
            "type": "integer",
            "description": "Kernel major version.",
            "example": 124
          },
          "accountInfo": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AccountInfo"
              },
              {
                "type": "null"
              }
            ],
            "description": "Platform account bound to the profile. `null` when none is configured."
          },
          "isShowAccount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToggleFlag"
              }
            ],
            "description": "Password protection switch."
          },
          "afterStartupConfig": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AfterStartupConfigDetail"
              },
              {
                "type": "null"
              }
            ],
            "description": "Behavior applied after the browser starts."
          },
          "startupParams": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "--disable-notifications"
            ]
          },
          "cookies": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cookies as a JSON text payload.",
            "example": "[{\"name\":\"sid\",\"value\":\"abc\"}]"
          },
          "advancedSetting": {
            "$ref": "#/components/schemas/AdvancedSetting"
          }
        }
      },
      "ApiResponseBase": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Return result code. `0` means success; other codes indicate exceptions.",
            "example": 0
          },
          "msg": {
            "type": [
              "string",
              "null"
            ],
            "description": "Error message. Usually `null` on success.",
            "example": null
          },
          "requestId": {
            "type": "string",
            "description": "Operation request ID. This field may be present when the request passes through the API gateway.",
            "example": "1d4f3ea968664593860b94b35d4ebf5e"
          }
        },
        "required": [
          "code",
          "msg"
        ]
      },
      "EnvironmentId": {
        "type": "string",
        "pattern": "^[1-9]\\d*$",
        "description": "Browser profile (environment) ID. Serialized as a decimal string to avoid JavaScript\nprecision loss on 64-bit integers.\n",
        "example": "1800000000000001"
      },
      "CloudBrowserStartRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          }
        },
        "required": [
          "envId"
        ]
      },
      "CloudBrowserStopRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          },
          "force": {
            "type": "boolean",
            "description": "Whether to forcibly release the cloud runtime. Only takes effect when the current run has\nan archive status of `FAILED`; in that case the archive step is skipped and runtime\nresources are reclaimed. Ignored in all other cases.\n",
            "default": false,
            "example": false
          }
        },
        "required": [
          "envId"
        ]
      },
      "CloudBrowserPageRequest": {
        "type": "object",
        "properties": {
          "uniqueIds": {
            "type": "array",
            "description": "Environment sequence numbers. Up to 100 items.",
            "maxItems": 100,
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "example": [
              1001,
              1002
            ]
          },
          "envId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnvironmentId"
              }
            ],
            "description": "Environment ID. The request also accepts the field alias `id`."
          },
          "envName": {
            "type": "string",
            "description": "Environment name.",
            "example": "marketing-01"
          },
          "keyword": {
            "type": "string",
            "description": "Keyword filter. Matches environment name, group name, tag name, and remark.",
            "example": "marketing"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Group ID. `0` means ungrouped.",
            "example": "0"
          },
          "pageNo": {
            "type": "integer",
            "format": "int64",
            "description": "Current page number, starting from 1. Default is 1.",
            "minimum": 1,
            "default": 1,
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page. Default is 10, maximum 100.",
            "minimum": 1,
            "maximum": 100,
            "default": 10,
            "example": 10
          }
        },
        "required": [
          "pageNo",
          "pageSize"
        ]
      },
      "CloudBrowserStatus": {
        "type": "string",
        "description": "Cloud runtime status:\n- `STARTING` — starting up\n- `RUNNING` — running and ready to connect\n- `CLOSED` — not started, closed, or failed to start\n",
        "enum": [
          "STARTING",
          "RUNNING",
          "CLOSED"
        ],
        "example": "RUNNING"
      },
      "CloudBrowserArchiveStatus": {
        "type": [
          "string",
          "null"
        ],
        "description": "Archive status of the current cloud run. `null` when there is no active run record:\n- `PENDING` — pending archive\n- `ARCHIVING` — archiving\n- `COMPLETED` — archive completed\n- `FAILED` — archive failed\n",
        "enum": [
          "PENDING",
          "ARCHIVING",
          "COMPLETED",
          "FAILED",
          null
        ],
        "example": null
      },
      "CloudBrowserPageItem": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/EnvironmentId"
          },
          "envName": {
            "type": "string",
            "description": "Environment name.",
            "example": "marketing-01"
          },
          "proxyId": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d+$",
            "description": "Proxy ID currently bound to the profile. `null` when no proxy is configured.",
            "example": "1800000000000101"
          },
          "cloudBrowserStatus": {
            "$ref": "#/components/schemas/CloudBrowserStatus"
          },
          "cloudBrowserArchiveStatus": {
            "$ref": "#/components/schemas/CloudBrowserArchiveStatus"
          },
          "startDate": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Cloud runtime start time. `null` while starting, or when not started or closed.",
            "example": "2026-01-15T10:30:00.000+00:00"
          }
        },
        "required": [
          "id",
          "envName",
          "cloudBrowserStatus"
        ]
      },
      "CloudBrowserPageData": {
        "type": "object",
        "properties": {
          "total": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Total number of records.",
            "example": "42"
          },
          "current": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Current page number.",
            "example": "1"
          },
          "pages": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Total number of pages.",
            "example": "5"
          },
          "dataList": {
            "type": "array",
            "description": "Environments on the current page. Empty array when there are no results.",
            "items": {
              "$ref": "#/components/schemas/CloudBrowserPageItem"
            }
          }
        },
        "required": [
          "total",
          "current",
          "pages",
          "dataList"
        ]
      },
      "CloudBrowserConnectRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          }
        },
        "required": [
          "envId"
        ]
      },
      "CloudBrowserConnectResult": {
        "type": "object",
        "properties": {
          "cdpUrl": {
            "type": "string",
            "description": "Full CDP (Chrome DevTools Protocol) address including the access `token` parameter. Pass this\nURL to an automation framework such as Puppeteer, Playwright, or Selenium to attach to the\nremote browser.\n",
            "example": "https://runtime1.morelogin.com:16167?token=c62fedaaac524e41a0f02fc4345d41cb"
          },
          "accessUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cloud browser page wrapper address. Open it in a browser to view and control the cloud\nbrowser desktop. `null` when the page wrapper is not configured.\n\nThe `token` parameter is a Base64-encoded payload carrying the desktop URL, desktop token,\nexpiry, and team, user, member, and environment IDs. The `envName` and `lang` parameters set\nthe displayed environment name and interface language.\n",
            "example": "https://official-website.morelogin.com/browser-remote?token=eyJkZXNrdG9wVXJsIjoi...ZW52SWQiOiIyMDczMzk1NDg5NzM4OTE5OTM2In0%3D&envName=P-1267&lang=en-US"
          }
        },
        "required": [
          "cdpUrl"
        ]
      }
    },
    "responses": {
      "VoidDataResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null",
                      "example": null
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "BooleanDataResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "boolean",
                      "description": "Whether the batch operation succeeded.",
                      "example": true
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              ]
            }
          }
        }
      },
      "CloudBrowserPageResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CloudBrowserPageData"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              ]
            }
          }
        }
      },
      "CloudBrowserConnectResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CloudBrowserConnectResult"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              ]
            },
            "example": {
              "code": 0,
              "msg": null,
              "data": {
                "cdpUrl": "https://runtime1.morelogin.com:16167?token=c62fedaaac524e41a0f02fc4345d41cb",
                "accessUrl": "https://official-website.morelogin.com/browser-remote?token=eyJkZXNrdG9wVXJsIjoi...ZW52SWQiOiIyMDczMzk1NDg5NzM4OTE5OTM2In0%3D&envName=P-1267&lang=en-US"
              },
              "requestId": "1d4f3ea968664593860b94b35d4ebf5e"
            }
          }
        }
      }
    }
  }
}